Simulating particle dynamics

ABSTRACT

Embodiments of the present disclosure relate to a method of particle system analysis. The method includes during an analysis of behavior of particles in a particle system, applying a scalar to a position value for at least one particle of the particles. The scalar may be based on parameters for the analysis. The method may further include after applying the scalar, truncating the position values corresponding to the particles, and determining a distance between a first particle and a second particle based on the truncated position values of the first particle and the second particle. The method may further include determining a behavior of the particle system based on the distance.

BACKGROUND

The ability of processing systems, such as systems that includegraphical processing units, to perform many mathematic computations hasincreased the ability to study many physical phenomena and assisted inthe development of scientific research and new technologies. Oneparticular area which has benefited greatly from the mathematiccapabilities of processing systems is simulation of particle systems,such as the simulation of interactions between atoms at a molecularlevel. The simulation of interactions between atoms has assisted intechnological fields ranging from drug discovery to material designs.

In particle system simulation, the fidelity of predictions hinges on thereliability and accuracy of the computations performed to simulate theinteractions of the particles. Changes in the reliability and accuracyof the computations may result in failed simulations or inaccurateresults.

SUMMARY

Embodiments of the present disclosure relate to particle systemanalysis, particularly (though without limitation) to simulations ofparticle systems and applications. One or more embodiments may beimplemented as a method for analyzing the behavior of particles in aparticle system that includes applying a scalar value to a positionvalue for at least one particle of the particles. The scalar value maybe based on parameters for the analysis. One or more implementations ofthe method may further include, after applying the scalar value,truncating the position values corresponding to the particles anddetermining a distance between a first particle and a second particlebased on the truncated position values of the first particle and thesecond particle. One or more implementations of the method may furtherinclude determining a behavior of the particle system based on thedistance.

BRIEF DESCRIPTION OF THE DRAWINGS

The present systems and methods for yield scenario encoding forautonomous systems are described in detail below with reference to theattached drawing figures, wherein:

FIG. 1 illustrates an example simulation environment configured tosimulate behavior of particle systems, in accordance with someembodiments of the present disclosure;

FIG. 2 is a flow diagram showing an example method for analyzingbehavior of a particle system, in accordance with some embodiments ofthe present disclosure;

FIG. 3 illustrates an example particle diagram, in accordance with someembodiments of the present disclosure;

FIG. 4 illustrates a diagram with a particle system in relation to acoordinate system, in accordance with some embodiments of the presentdisclosure;

FIG. 5 illustrates a configuration of cells into which particles of aparticle system are partitioned, in accordance with some embodiments ofthe present disclosure;

FIG. 6 is a flow diagram showing an example portion of a method foranalyzing behavior of a particle system, in accordance with someembodiments of the present disclosure;

FIG. 7 is a flow diagram showing another example portion of a method foranalyzing behavior of a particle system, in accordance with someembodiments of the present disclosure;

FIG. 8 is a flow diagram showing another example method for analyzingbehavior of a particle system, in accordance with some embodiments ofthe present disclosure;

FIG. 9 is a flow diagram showing another example method for analyzingbehavior of a particle system, in accordance with some embodiments ofthe present disclosure;

FIG. 10 is a block diagram of an example computing device suitable foruse in implementing some embodiments of the present disclosure; and

FIG. 11 is a block diagram of an example data center suitable for use inimplementing some embodiments of the present disclosure.

DETAILED DESCRIPTION

A particle system, such as a molecular compound, may be simulated tounderstand how the system behaves over time. In particular, thesimulation of particle systems may provide an indication of how thesystem reacts over time in response to interactions between theindividual particles. In some circumstances, a particle system mayinclude thousands, tens of thousands, or hundreds of thousands ofparticles, such as atoms. As a result, a simulation of the system mayconsider hundreds of thousands or millions of calculations persimulation iteration.

To maintain accuracy of a simulation, data regarding the particles, suchas a particle location within the system, may be stored using a firstvalue type of a first number of bits. However, based on a design ofprocessing units performing calculations for the simulation, theprocessing units may operate more efficiently when processing data of asecond value type of a second number of bits that is less than the firstnumber of bits. In these and other circumstances, the data may beconverted to the second value type during simulation when makingcalculations to increase the efficiency of the simulation. However,roundoff errors may occur when converting between value types. Theroundoff errors may result in inaccuracies in the simulation. Forexample, a positive roundoff error may cause a system during simulationto lose energy and a negative roundoff error may cause a system duringsimulation to gain energy.

According to one or more embodiments of the present disclosure, toreduce potential inaccuracies in the simulation due to convertingbetween value types, values used for the simulation may be converted toa third value type. In some embodiments, the third value type may have amantissa with more bits than a mantissa of the second value type.Alternately or additionally, a scalar, based on simulation parametersapplied during the simulation, may be applied to a value of the firstvalue type before converting to the value to the third value type. Thevalue in the third value type may be stored and used during thesimulation. During the simulation, the value of the third value type mayalso be converted to the second value type. When converting the value tothe second value type from the third value type, the scalar value mayagain be used. As an example, the values used for the simulation may belocations of particles in the system. In these and other embodiments,distances between particles may be calculated based on the values of thelocations of the particles. The simulation may determine a behavior ofthe particle system based on the distances between the particles.

With reference to FIG. 1 , FIG. 1 illustrates an example simulationenvironment 100 configured to simulate behavior of particle systems. Thesimulation environment 100 may be implemented according to one or moreembodiments of the present disclosure. The simulation environment 100may include a simulation system 110 that may obtain particle systeminformation 112 of a particle system and simulation parameters 114. Thesimulation system 110 may output a particle system behavior 120 based onthe obtained particle system information 112 and the simulationparameters 114.

In some embodiments, the simulation system 110 may include code androutines configured to enable a computing system to perform one or moreoperations. Additionally or alternatively, the simulation system 110 maybe implemented using hardware including one or more processors,graphical processing units (GPUs), data processing units (DPUs),microprocessors (e.g., to perform or control performance of one or moreoperations), field-programmable gate arrays (FPGA), and/orapplication-specific integrated circuits (ASICs). In some otherinstances, the simulation system 110 may be implemented using acombination of hardware and software. In the present disclosure,operations described as being performed by the simulation system 110 mayinclude operations that the simulation system 110 may direct acorresponding system to perform.

In some embodiments, the particle system information 112 may includeinformation regarding a particle system. The particle system may includemultiple different particles. In some embodiments, some of the particlesin the particle system may be bonded together. For example, the particlesystem may be a compound molecule. In these and other embodiments, thecompound molecule may include multiple atoms. Some of the atoms may bebonded together, such as by a covalent or ionic bond. These particlesbonded together may be referred to as bonded particles. Alternately oradditionally, some of the particles in the particle system may not bedirectly bonded to other particles or through a common particle butpositioned such that the particles may cause an effect on otherparticles in the particle system. When discussing the effects ofseparated particles on each other, the particles may be referred to asnonbonded particles. Note that a first particle may be bonded with asecond particle and also be nonbonded with a third particle.

In some embodiments, the particle system information 112 may furtherinclude information about the particles, such as a type of the particle,a location of the particle within the particle system, energy levels ofthe particle, among other information about the particles.

In some embodiments, the simulation parameters 114 may define how thesimulation system 110 may perform a simulation of the particle system.The simulation parameters 114 may include one or more of a distancewithin which to consider effects between nonbonded particles, adielectric constant, a heating phase time, a time step size, data valuetypes, and a simulation run time, among others. The simulationparameters 114 may affect how the simulation system 110 determines theparticle system behavior 120.

In some embodiments, the simulation system 110 may obtain the particlesystem information 112 and the simulation parameters 114 and may beconfigured to perform simulations to determine interactions between theparticles to analyze a behavior of the particle system. The simulationsystem 110 may output the particle system behavior 120 based on thesimulations.

In some embodiments, the simulation system 110 may simulate the behaviorof the particle system by iteratively calculating energy between theparticles in the particle system and analyzing how the energy betweenthe particle system changes over time and how the change in energyeffects the particle systems, such as locations of the particles andbonds between the particles. For example, in some embodiments, thesimulation system 110 may consider stretching, bonding, and torsionalenergy between bonded particles and vanderWaals, electrostatic, andimproper energies between nonbonded particles. In these and otherembodiments, a distance between nonbonded particles may be used todetermine the vanderWaals and electrostatic energies. As such, duringthe simulation of the particle system, the simulation system 110 maycalculate distances between nonbonded particles so that vanderWaals andelectrostatic energies between nonbonded particles may be calculated.

In some embodiments, the simulation system 110 may consider vanderWaalsand electrostatic energies between particles that are positioned withina distance such that the vanderWaals and electrostatic energies aresignificant enough to be considered in the simulation. For example, eachof the vanderWaals and electrostatic energies are dependent on distancesbetween particles such that as the distance between particles increases,the vanderWaals and electrostatic energies between the particlesdecreases. Thus, at distances more than an interaction distance, thevanderWaals and electrostatic energies may be at such a magnitude thatthe energies may not be considered by the simulation system 110. Theinteraction distance may be selected for the simulation system 110 inthe simulation parameters 114.

In some embodiments, distances between nonbonded particles arecalculated based on the locations of the particles in the particlesystem. The locations of the particles may be stored using a first valuetype. Based on a configuration of the computing system on which thesimulation system 110 is hosted, in some circumstances, the computersystem may more efficiently perform calculations using a second valuetype. In these and other embodiments, the second value type may includefewer bits than the first value type. For example, the first value typemay be a 64-bit floating point and the second value type may be a 32-bitfloating point. Alternately or additionally, the first value type may bea 32-bit floating point and the second value type may be a 16-bitfloating point.

In these and other embodiments, the simulation system 110 may truncatethe values of the locations of the particles from the length of thefirst value type to the length of the second value type. Aftertruncating the values of the locations, the values of the locations maybe stored and distances between particles may be determined based on thestored values.

In some embodiments, to reduce a magnitude of the values of thelocations that are stored, the particle system may be partitioned intocells. Each cell may include an origin and the locations of theparticles with respect to the origin of the entire particle system maybe translated to be with respect to the origin of the cell that includesthe particle. In these and other embodiments, an origin of a cell may bereferred to as a local origin and an origin of the particle system maybe referred to as a global origin.

In these and other embodiments, the cells may include dimensions thatare based on the interaction distance. Because the dimensions of thecells are based on the interaction distance, all particles within theinteraction distance of a particular particle are in a current cell ofthe particular particle or a cell directly adjacent to the current cell.As a result, the values of the locations of particles with respect tothe local origin of the cells are smaller in magnitude than the valuesof the locations of particles with respect to the global origin of theparticle system. In some embodiments, performing calculations on valueswith lower magnitudes may reduce computational errors due to roundingwhen values are stored in data types with finite representations ofvalues. A reduction in computational errors may reduce noise in thesimulation.

In some embodiments, to further reduce computational errors due torounding, the values of the locations of the particles with respect tolocal origins may be stored in a third value type with a mantissa thatis larger than the second value type. A larger mantissa may allow formore significant digits of the locations of the particles to be stored,thereby further reducing computational errors due to rounding. Forexample, the third value type may be an integer value type with amantissa of 31 bits and the second value type may be a floating pointwith a mantissa of 23 bits. Thus, in some embodiments, a location of aparticular particle may be truncated and converted from a first valuetype to a third value type for storage. Furthermore, data regardingdistances sizing of the cells that may be used to calculate distancesbetween particles in adjacent cells may be stored using the third valuetype. In these and other embodiments, when calculating distances betweenparticles in adjacent cells, the location of the particles and thesizing of the cells may be used for at least some of the calculationswhen the values have the third value type.

In some embodiments, for some calculations during the simulation, thelocation of the particular particle may be converted to the second valuetype for more efficiently calculation performance. Alternately oradditionally, calculations for determining the difference between thelocations of particles may be performed using values in the third valuetype. In these and other embodiments, adjustments may be made to theprocess to assist in more efficient computation of the differences.

In some embodiments, the adjustments to the process may include groupingthe particles into groups of equal size. Calculations for particles in agroup may be performed in overlapping time periods, such as at the sametime. For example, in these and other embodiments, the calculations foreach of the particles in the group may be performed by a thread of amulti-thread processing unit. As such, each thread may be processed inoverlapping periods of time.

In these and other embodiments, however, due to the number of particlespotentially not being divisible by the size of the groups, someparticles may remain after forming the groups. To avoid have specialinstructions for a processing unit to handle the remaining particles, agroup may be formed with placeholder particles and the remainingparticles. As a result, the processing unit may process all theparticles in a similar manner. To avoid introducing errors into asimulation by the introduction of placeholder particles, the placeholderparticles may be positioned in the system such that the placeholderparticles are greater than the interaction distance from particles beingconsidered such that no calculations are performed for the placeholderparticles and the placeholder particles are essential ignored during thecalculations performed by the processing unit.

In some embodiments, before converting a value type of the positions ofthe particles to a third value type, a scalar value may be applied tothe positions of the particles. Applying the scalar value may assist inbounding the dynamic range of the positions when converting thepositions to the third value type. In these and other embodiments, thescalar value may be based on the interaction distance. In these andother embodiments, an inverse of the scalar value may be applied to thevalues of the positions of the particles before converting the positionsof the particles to the second value type or the first value type toremove the scalar value.

In some embodiments, the particle system behavior 120 output by thesimulation system 110 may indicate how the locations, energies, and/orbonds between the particles in the particle system may change overtimebased on interactions between the particles in the particle system.

Modifications, additions, or omissions may be made to FIG. 1 withoutdeparting from the scope of the present disclosure. For example in someembodiments, the simulation system 110 may include addition inputparameters than those considered such as information regarding thecomputing system on which the simulation system 110 is hosted.

Now referring to FIG. 2 , each block of method 200, and other methodsdescribed herein, comprises a computing process that may be performedusing any combination of hardware, firmware, and/or software. Forinstance, various functions may be carried out by a processor executinginstructions stored in memory. The methods may also be embodied ascomputer-usable instructions stored on computer storage media. Themethods may be provided by a standalone application, a service or hostedservice (standalone or in combination with another hosted service), or aplug-in to another product, to name a few. In addition, method 200 isdescribed, by way of example, with respect to the simulation system 110of FIG. 1 . However, these methods may additionally or alternatively beexecuted by any one system, or any combination of systems, including,but not limited to, those described herein.

FIG. 2 is a flow diagram showing an example method 200 for analyzingbehavior of a particle system, in accordance with some embodiments ofthe present disclosure. The method 200 may be carried out via asimulation system, such as but not limited to the simulation system 110of FIG. 1 .

The method 200, at block B202, includes obtaining one or more simulationparameters for a particle system. The simulation parameters may includeparameters such as the simulation parameters 114 of FIG. 1 . Thesimulation parameters may be parameters used by a simulation system,such as the simulation system 110 of FIG. 1 to simulate behavior of aparticle system. Some of the simulation parameters may be based on aconfiguration of the particle system. Some of the simulation parametersmay be based on a desired accuracy of the simulation, run time of thesimulation, and/or processing system used to perform the simulation,among other elements of a simulation.

In some embodiments, a simulation parameter may include an interactiondistance for considering interactions between particles. Alternately oradditionally, a simulation parameter may include a particle movementdistance. Both the interaction distance and particle movement distanceare further described with respect to FIG. 3 .

At block B204, the particle system may be partitioned into one or morecells. In some embodiments, the cells may be a three-dimensionalrectangular cuboid. A length of each side of a cell may be at least alength of a combination of the interaction distance and the particlemovement distance. In some embodiments, the length of each side of acell may vary during a simulation in response to a change to one or moreof the interaction distance and the particle movement distance.

In some embodiments, the particle system may be partitioned into asufficient quantity of cells such that one or more of the particles inthe particle system are located within a cell. Based on the distributionof particles in the particle system, the cells may have a distributiongreater in one dimension than another dimension.

In some embodiments, one or more of the cells may include a local originas a reference point for a local coordinate system within each of thecells. The local origin may be a reference point within the cells, but alocation for the local origin for one or more of the cells may be theposition within each cell. For example, the local origin may be in thesame corner of each cell.

In some embodiments, a location of each particle within a first cell maybe determined with respect to a local origin of the first cell in alocal coordinate system. Alternately or additionally, a location foreach particle within cells directly adjacent to a first cell may bedetermined with respect to the local origin and the local coordinatesystem of the first cell. For example, a first particle in the firstcell may have a first location with respect to a first origin of thefirst cell. A second particle in a second cell may have a secondlocation with respect to a second origin of the second cell. A distancebetween the first origin and the second origin may be determined basedon the size of the first and second cells and the locations of the firstorigin and the second origin. As such, a location of the second particlewith respect to the first origin may be the second location offset bythe distance between the first origin and the second origin. Thus, adistance between the first particle and the second particle may bedetermined with respect to the local coordinate system of the first celleven though the second particle is not located in the first cell and theposition of the second particle is not part of the local coordinatesystem of the first cell. FIG. 4 provides an example illustration ofsome cells in a particle system. In these and other embodiments, a firstcell may be considered directly adjacent to a second cell when the firstcell and the second cell touch at a cell boundary.

At block B206, one or more positions of particles in a global coordinatesystem may be translated to a local coordinate system. The localcoordinate system may be a coordinate system of the cells that includethe particles. The position a first particle in the global coordinatesystem may be translated to a local coordinate system of a first cellbased on the position of the first cell within the global coordinatesystem. For example, a position of an origin of the local coordinatesystem of the first cell in the global coordinate system may bedetermined. To map the position of the first particle to the localcoordinate system of a cell, the position of the local origin of thecell in the global coordinate system may be removed from the position ofthe first particle in the global coordinate system. As a result, thelocation of the first particle in the local coordinate system may be thedifference between the position of the local origin in the globalcoordinate system and the position of the first particle in the globalcoordinate system.

In some embodiments, the position for a particle in a local coordinatesystem with respect to each dimension in a three-dimensional space maybe determined separately. Alternately or additionally, in someembodiments, the position of a particle in the global coordinate systemmay be normalized before determining the difference between the positionof the local origin in the global coordinate system and the position ofthe first particle in the global coordinate system. For examplenormalizing the position of a particle in the global coordinate systemmay include mapping the position of the particle to a known globalorigin. The position of a particle in the global coordinate system maybe mapped to a known global origin using a modulus operator with respectto size of all cells. The following equation may illustrate translationfrom a global coordinate system to a local coordinate system for the xdimension:

XLocalPosition=(XGlobalPosition % XGridsize)−(XCellNumber*XCellSize)

where XLocalPosition is the position in the x dimension of a particle inthe local coordinate system, XGlobalPosition is the position in the xdimension of a particle in the global coordinate system, XGridsize isthe size of a cells in the x dimension, XCellNumber is a number of acell that includes the particle, and XCellSize is the size of one cellin the x dimension. In these and other embodiments, the product ofXCellNumber and XCellSize provides the location of the local origin ofthe cell in the x dimension of the global coordinate system andXGlobalPosition modules XGridsize provides a normalized value of theposition of the particle in the global coordinate system. Asillustrated, a similar equation may be performed for the y dimension andthe z dimension so that the position of the particle is known in allthree dimensions. In these and other embodiments, the values for thepositions used in this step may have a first value type.

At block B208, the position values of one or more particles in the localcoordinate system may be truncated. Truncation of the position valuesmay convert the position values to a third value type. In these andother embodiments, the number of bits in the third value type may beless than the number of bits in the first value type. For example, thefirst value type may use 64 bits and the third value type may use 32bits. Alternately or additionally, the first value type may be of adifferent format than the third value type. For example, the first valuetype may be a floating-point format and the third value type may be aninteger format.

In some embodiments, before truncating the position value a scalar valuemay be applied to the position values. In these and other embodiments,the scalar value may be applied based on changing formats from the firstvalue type to the third value type. The scalar value may assist to bounda dynamic range of the value that is stored in the third value type.

In some embodiments, the scalar value may be based on the dimensions ofthe cells. For example, the scalar value may be based on values of theinteraction distance and/or the particle movement distance. For example,a scalar value may be calculated as follows:

Scalar=(2{circumflex over ( )}bitsize)/((1.5*(C+S))+(0.5*S)+EM)

where bitsize is the number of bits of the mantissa of the third valuetype, C is the interaction distance, S is the particle movementdistance, and EM is an error margin based on rounding errors that mayoccur when adding values with a computer using data types with a limitedmantissa. In some embodiments, the scalar value may also be applied toan offset distance that represents a distance between origins ofadjacent cells.

At block B210, truncated position values of the particles may be stored.The position values may be stored in memory for use during a simulation.The position values may be stored in the third value type. For example,the position values may be calculated, stored, and then accessed duringiterations of the simulation.

At block B212, one or more interactions between particles may besimulated. Simulations of the interactions between particles may allowfor an analysis of the behavior of the particle system over time. Thesimulation may consider bonded and non-bonded interactions betweenparticles. In some embodiments, when simulating non-bonded interactionsbetween particles, the simulation may perform the actions recited inblocks B214 and B216.

At block B214, stored position values may be accessed from memory. Thestored position values may be accessed in the third value type. Thestored position values may be accessed when a distance between particlesis calculated during the simulation.

At block B216, distances between particles may be determined based onthe stored position values. The distances may be used to determineinteractions between the particles which may be used to determine abehavior of the particle system.

In some embodiments, as described previously, only interactions betweenparticles that are within the interaction distance may be considered bya simulation. Thus, for the simulation, the interactions between eachparticle and all the particles within the interaction distance for eachparticle may be considered. In these and other embodiments, particlesmay be determined to potentially be within the interaction distance of aparticular particle based on the cell of the particular particle. Forexample, all of the particles within the cell of the particular particlemay potentially be within the interaction distance. Furthermore, allparticles within directly adjacent cells of the cell of the particularparticle may potentially be within the interaction distance of theparticular particle. Thus, during a simulation the distances betweeneach particle in a cell, the other particles in the cell, and theparticles in all directly adjacent cells may be calculated. Interactionsmay be determined for those particles with a distance therebetween lessthan the interaction distance. Further description of calculatingdistances between particles in adjacent cells is discussed with respectto FIG. 5 .

In some embodiments, to calculate a distance between a first particle ina first cell and a second particle in a second cell adjacent the firstcell, the location of the second particle with respect to a first originof the first cell may be determined. The location of the second particlewith respect to the origin of the first cell may be a location of thesecond particle with respect to a second origin of the second celloffset by the distance between the first origin and the second origin.The distances between origins of cells may be referred to as celloffsets.

In some embodiments, the stored position values may be accessed in thethird value type. In these and other embodiments, the cell offsets mayhave been stored in the third value type and may be accessed in thethird value type. Thus, when determining a location of the secondparticle, the location may be a sum of the stored position value of thesecond particle in the third value type with a corresponding cell offsetstored in the third value type.

In some embodiments, during the simulation, values that result fromcalculations involving values of the third value type may be convertedto a second value type. The second value type may be of the same formatas the first value type. In these and other embodiments, the secondvalue type may have a length equal to the length of the third valuetype. However, the second value type may have a mantissa that is shorterin length than the mantissa of the third value type.

In some embodiments, one behavior of the particle system may includemovement of particles. Thus, during iterations of simulation, positionsof particles may be updated. As positions of the particles are updated,the particles may move such that a particle previously located in onecell is now located in another cell. As a result, after one or moreiterations of a simulation, a cell assignment of a particle may beincorrect. An incorrect cell assignment may result in an interactionbetween two particles not being considered when the interaction shouldbe considered, or an interaction being considered when the interactionshould not be considered. In these instances, the particle system may berepartitioned into cells.

In some embodiments, the repartitioning of the cells may occur inresponse to movement of the particles. In some embodiments, any movementof particles may be considered for repartitioning of the cells.Alternately or additionally, movement of particles that may be more thana movement threshold may be considered for repartitioning of the cells.In these and other embodiments, the movement threshold may be based onthe interaction distance and/or the particle movement distance. Forexample, the movement threshold may be a portion of the interactiondistance and/or the particle movement distance. As an example, themovement threshold may be half of the particle movement distance.Additional description of actions performed when simulating non-bondedinteractions between particles is described with respect to FIGS. 6 and7 .

At block B218, it may be determined if a particle moved more than themovement threshold. In response to a particle moving more than themovement threshold, the method 200 may proceed to B204. At B204, theparticle system may be repartitioned into cells and the method 200 mayproceed as described above to again translate position values ofparticles, truncate the position values, and store them. In response toa particle not moving more than the movement threshold, the method 200may continue to simulate interactions between the particles.

Modifications, additions, or omissions may be made to the method 200without departing from the scope of the present disclosure. For example,the functions and/or operations performed may be implemented indiffering order. Furthermore, the outlined functions and operations areonly provided as examples, and some of the functions and operations maybe optional, combined into fewer functions and operations, or expandedinto additional functions and operations without detracting from theessence of the disclosed embodiments. In some embodiments, the method200 may include additional blocks or fewer blocks.

FIG. 3 illustrates an example particle diagram 300, in accordance withsome embodiments of the present disclosure. The particle diagram 300 mayillustrate multiple particles from a particle system including a primaryparticle 330 and secondary particles 332 a-332 i.

In some embodiments, during a simulation of the behavior of the primaryparticle 330 and the secondary particles 332 a-332 i, interactionsbetween non-bonded particles may be considered. However, as discussedabove, with respect to a particular particle, such as the primaryparticle 330, only interactions with particles that are within aninteraction distance of the particular particle may be considered. FIG.3 illustrates the particles with which interactions are considered withrespect to the primary particle 330.

In some embodiments, a particle interaction boundary 310 with a radius312 may be selected for the primary particle 330. The particleinteraction boundary 310 may form an enclosure around the primaryparticle 330. Interactions between the primary particle 330 and theparticles of the secondary particles 332 a-332 i that are within theparticle interaction boundary 310 may be used during a simulation. Thus,during a simulation of the particle system, the simulation may use theinteractions between the primary particle 330 and each of the particleswithin the particle interaction boundary 310, namely the secondaryparticles 332 a-332 d. A simulation may determine which interactionswith the secondary particles 332 a-332 i to include based on distancesbetween the secondary particles 332 a-332 i and the primary particle330. In these and other embodiments, when a distance between the primaryparticle 330 and one of the secondary particles 332 a-332 i is less thanthe radius 312, the interactions between the one of the secondaryparticles 332 a-332 i and the primary particle 330 is considered. Inthese and other embodiments, a length of the radius 312 may be based ona simulation parameter, such as the interaction distance. The magnitudeof the radius 312 may be based on a type of the particle system and/or adesired accuracy, tolerance, or other aspect of a simulation. In FIG. 3, the particle interaction boundary 310 is illustrated in two-dimensionsas a circle, however, in implementation, the particle interactionboundary 310 may be a sphere with the radius 312 extending in alldirections away from the primary particle 330.

During simulation of the particle system, the particles may move. Thus,during a simulation a particle close to the particle interactionboundary 310 may move to be within the particle interaction boundary310. For example, the secondary particles 332 f may move to be withinthe particle interaction boundary 310. Thus, in some embodiments, asimulation may further consider particles within a particleconsideration boundary 320 as candidate particulars for whichinteractions with the primary particle 330 may be used. The particleconsideration boundary 320 may include a thickness 322. In someembodiments, the thickness 322 may be a simulation parameter, such as aparticle movement distance. A magnitude of the thickness 322 may bebased on a type of the particle system and/or a desired accuracy,tolerance, or other aspect of a simulation.

In these and other embodiments, during every iteration of a simulation,the distances between the primary particle 330 and other particleswithin the particle consideration boundary 320 may be determined.However, only interactions between those particles with distances to theprimary particle 330 that are less than the radius 312 may be usedduring the simulation. As such, during an iteration of a simulation,distances between the secondary particles 332 a-332 f and the primaryparticle 330 may be determined, but only those interactions between theprimary particle 330 and the secondary particles 332 a-332 d within theparticle interaction boundary 310 may be used.

As illustrated in FIG. 3 , interactions between the primary particle 330and the secondary particles 332 e-332 i may not be considered in one ormore embodiments. However, as the particles move over time, one or moreof the particles with which interactions with the primary particle 330may be considered may change. For example, the secondary particle 332 bmay move outside the particle interaction boundary 310 and the secondaryparticle 332 f may move inside the particle interaction boundary 310.

Additionally, note that a magnitude of the radius 312 and a magnitude ofthe thickness 322, and thus the magnitude of the simulation parametersof the interaction distance and the particle movement distance, may be afunction of a parameter in the simulation. For example, in someembodiments, the magnitude of the radius 312 and the magnitude of thethickness 322 may be a function of a pressure within the simulation.Thus, the magnitude of the radius 312 and the magnitude of the thickness322 may be initialized for a simulation. As a pressure varies during thesimulation, the magnitude of the radius 312 and the magnitude of thethickness 322 may vary. For example, as the pressure increases themagnitude of the radius 312 and the magnitude of the thickness 322 maydecrease and as the pressure decreases the magnitude of the radius 312and the magnitude of the thickness 322 may increase.

Furthermore, note that each particle of a particle system may include aparticle interaction boundary 310 and a particle consideration boundary320 even though FIG. 3 only illustrates the particle interactionboundary 310 and the particle consideration boundary 320 for the primaryparticle 330.

Modifications, additions, or omissions may be made to FIG. 3 withoutdeparting from the scope of the present disclosure. For example, in someembodiments, the particle consideration boundary 320 may not beconsidered. In these and other embodiments, after every iteration of asimulation, particles that are within a particle interaction boundary310 of each particle may be determined. By using the particleconsideration boundary 320, only after a particle moves more than halfthe distance of the thickness 322 would the particles within theparticle consideration boundary 320 be redetermined.

FIG. 4 illustrates a diagram 400 with a particle system 410 in relationto a coordinate system 408, in accordance with some embodiments of thepresent disclosure. The particle system 410 includes particles 412 andthe coordinate system 408 includes an x-axis 402, a y-axis 404, and az-axis 406.

The diagram 400 further illustrates a first cell 420 and a second cell430 within the particle system 410. The first cell 420 may include afirst side 422, a second side 424, a third side 426, and a first origin428. The first side 422 may be aligned with the x-axis 402, the secondside 424 may be aligned with the y-axis 404, and the third side 426 maybe aligned with the z-axis 406. Each of the first side 422, the secondside 424, and the third side 426 may have a length that is as long as orlonger than a combination of an interaction distance and a particlemovement distance. Note that each of the first side 422, the second side424, and the third side 426 may have different lengths or the samelengths. The first origin 428 may be positioned at the lower left-handcorner. Similarly, a second origin 438 of the second cell 430 may bepositioned at the lower left-hand corner of the second cell 430.

In some embodiments, both the first cell 420 and the second cell 430 mayencompass some of the particles 412 of the particle system 410. Forexample, the first cell 420 may encompass a first particle 412 a and thesecond cell 430 may encompass a second particle 412 b. In these andother embodiments, the first particle 412 a may include a globallocation with respect to a global origin in a global coordinate systemfor the particle system 410. The first particle 412 a may furtherinclude a local location with respect to the first origin 428 in a firstlocal coordinate system of the first cell 420. For example, the locationof the first particle 412 a may include x component, a y component, anda z component. The x component may be a distance of the first particle412 a along the x-axis 402 from the first origin 428. The y componentmay be a distance of the first particle 412 a along the y-axis 404 fromthe first origin 428. The z component may be a distance of the firstparticle 412 a along the z-axis 406 from the first origin 428.

In some embodiments, the second particle 412 b may also include a locallocation with respect to the second origin 438 in a second localcoordinate system of the second cell 430.

A position of the second particle 412 b with respect to the first origin428 and the first local coordinate system of the first cell 420 may bedetermined based on a spatial relationship between the first origin 428and the second origin 438. For example, the second origin 438 may offsetfrom the first origin 428 along the x-axis 402. As such, the secondlocal coordinate system is offset from the first local coordinate systemthe distance between the first origin 428 and the second origin 438along the x-axis 402. Thus, the location of the second particle 412 b inthe second local coordinate system may be translated to a location inthe first local coordinate system by adding the offset between the firstorigin 428 and the second origin 438 along the x-axis 402.

For example, a location of the second particle 412 b may be (3, 4, 3) inthe second local coordinate system and the offset between the firstorigin 428 and the second origin 438 may be 6 in the x dimension. Assuch, the location of the second particle 412 b may be (9, 4, 3) in thefirst local coordinate system. As a result, a distance between the firstparticle 412 a and the second particle 412 b may be determined withrespect to the first local coordinate system.

Modifications, additions, or omissions may be made to FIG. 4 withoutdeparting from the scope of the present disclosure. For example, FIG. 4only illustrates two cells for ease in explanation. During a simulation,cells may be constructed to encompass all of the particles 412 of theparticle system 410.

FIG. 5 illustrates a configuration of cells 500 into which one or moreparticles of a particle system are partitioned, in accordance with someembodiments of the present disclosure. The configuration of cells 500may include a primary cell 520 and secondary cells 510 a-510 h. Asillustrated, the secondary cells 510 a-510 h may be directly adjacent tothe primary cell 520. For example, each of the secondary cells 510 a-510h may touch a boundary of the primary cell 520.

The configuration of cells 500 is illustrated in two-dimensions. Thus,the configuration of cells 500 would extend either into or out of thepage. In addition, in three-dimensions, additional cells would surroundthe primary cell 520. For example, a first set of nine cells would bepositioned in front of the cells illustrated and a second set of ninecells would be positioned in back of the cells illustrated. The firstand second set of nine cells may be referred to as secondarythird-dimension cells.

As described previously, only interactions between particles that arewithin an interaction distance may be considered by a simulation. Thus,for the simulation, the interactions between each particle and all theparticles within the interaction distance for each particle may beconsidered. In these and other embodiments, particles may be determinedto potentially be within the interaction distance of a particularparticle based on the cell of the particular particle. For example, whenthe particular particle is located in the primary cell 520, the cellswithin the interaction distance of the particular particle may includethe secondary cells 510 a-510 h in two dimensions. In three dimensions,the cells within the interaction distance of the particular particle mayinclude the secondary cells 510 a-510 h and the secondarythird-dimension cells. Thus, in three dimensions the particles intwenty-six cells adjacent to the primary cell 520 may be considered aswithin the interaction distance of the particular particle in theprimary cell 520. Note that the dimension of each of the cells may bethe sum of the interaction distance and the particle movement distance.Thus, which particles in the other cells are within the interactiondistance of the particular particle may depend on the location of theparticular particle in the primary cell 520 and the location of theparticles in the other cells. However, the arrangement of particles incells allows a system to determine candidate particles for interactionswith a particular particle.

Note that if each particle in each cell is considered with respect toeach particle of either other cell, then the distance between twoparticles may be determined twice. For example, during simulation, eachof the secondary cells 510 a-510 h may be considered as a primary cell.Thus, when the secondary cell 510 g is considered the primary cell, thedistance between particles in the secondary cell 510 g and the primarycell 520 may be determined. However, when the distances are determinedbetween particles in the primary cell 520 and other cells, the distancesbetween the particles in the primary cell 520 and the secondary cell 510g may again be determined. In these and other embodiments, a distancebetween two particles may not need to be determined twice. Thus, oncedistances between particles in different cells are determined, thedistance may be not redetermined.

In some embodiments, to avoid determining distances between twoparticles twice, when distances are determined with respect to particlesof a given cell, only those cells that contain particles with whichdistances between those cells and the given cell have not beendetermined may be calculated. For example, when distances betweenparticles with respect to the particles of the secondary cell 510 f aredetermined, the distances between the particles in the primary cell 520and the particles in the secondary cell 510 f may be determined. Assuch, when distances between particles with respect to the particles ofthe primary cell 520 are determined, the particles of the secondary cell510 f are not considered. In these and other embodiments, based on theconfiguration of cells 500, when distances between particles withrespect to the particles of the primary cell 520 are determined only theparticles in the secondary cells 510 a-d may be considered because thedistances between particles in the secondary cells 510 e-h and theparticles in the primary cell 520 may have already been determined.Thus, in two-dimensions, distances between particles in four cells maybe determined with respect to a given cell. In three-dimensions,distances between particles in thirteen cells may be determined withrespect to a given cell. By only considering a subset of adjacent cellswhen making distance between particle determinations, duplication ofdistance between particle determinations may be avoided.

Modifications, additions, or omissions may be made to FIG. 5 withoutdeparting from the scope of the present disclosure. For example, thedimensions of the cells may be different than those illustrated.

FIG. 6 is a flow diagram showing an example portion of a method 600 foranalyzing behavior of a particle system, in accordance with someembodiments of the present disclosure. The method may be carried out viaa simulation system, such as but not limited to the simulation system110 of FIG. 1 .

The method 600, at block B602, includes accessing one or more storedposition values from memory. The stored position values may be accessedin the third value type. The stored position values may be accessed whena distance between particles is calculated during a simulation. A cellmay be selected for determining distances between particles in a givencell and particles in adjacent cells. The position values of theparticles in the given cell and the particles in the adjacent cells maybe accessed.

At block B604, the position values of the particles in the adjacentcells may be adjusted based on the local coordinate systems of theadjacent cells. In these and other embodiments, cell offsets based onthe distances between the given cell and the adjacent cells may also beaccessed. The cell offsets may be accessed in the third value type. Thecell offsets may be applied to the position values of the particles inthe adjacent cells to obtain the locations of the particles in theadjacent cells in the local coordinate system of the given cell.

At block B606, the position values of one or more of the particles maybe converted to the second value type. After converting the positionvalues of the one or more particles, the scalar value applied to boththe position values of the particles and the cell offsets before beingstored in memory may be removed. For example, an inverse of the scalarvalue may be applied to the position values of the particles and thecell offsets.

At block B608, distances between particles may be determined based onthe position values of the particles in the second value type. In theseand other embodiments, a difference between the position values in thesecond value type may be calculated. The distances may be compared tothe interaction distance. In response to a distance being less than orequal to the interaction distance, an interaction between particles maybe considered by the simulation. In these and other embodiments, theinteraction may be a nonbonded interaction that may be based on thedistance. In response to a distance being more than the interactiondistance, no interaction between particles may be considered by thesimulation.

Modifications, additions, or omissions may be made to the method 600without departing from the scope of the present disclosure. For example,the functions and/or operations performed may be implemented indiffering order. Furthermore, the outlined functions and operations areonly provided as examples, and some of the functions and operations maybe optional, combined into fewer functions and operations, or expandedinto additional functions and operations without detracting from theessence of the disclosed embodiments. In some embodiments, the method600 may include additional blocks or fewer blocks.

FIG. 7 is a flow diagram showing another example portion of a method 700for analyzing behavior of a particle system, in accordance with someembodiments of the present disclosure. The method may be carried out viaa simulation system, such as but not limited to the simulation system110 of FIG. 1 .

The method 700, at block B702, includes grouping particles forcalculations. For example, particles may be grouped such thatcalculations for the particles, such as distance calculations betweenparticles, may be performed in overlapping time periods, such as at thesame time. In these and other embodiments, the calculations for each ofthe particles in the group may be performed by a thread of amulti-thread processing unit. In some embodiments, a size for each ofthe groups may be consistent, such that each group includes the samenumber of particles. In these and other embodiments, the size for eachof the groups may be a multiple of two. Alternately or additionally,particles may be grouped together that are in the same cell.

At block B704, it may be determined if all particles are part of aparticle group. For example if each group includes the same number ofparticles and the number of particles is not equally divisible by thenumber of particles in a group, some particles may not be part of agroup. Note that particles may not be grouped with particles that arenot part of the same cell such that particles are only grouped withparticles from the same cell. In response to some particles not beingpart of a group, the method 700 may proceed to B706. In response to allparticles being part of a group, the method 700 may proceed to block708.

At block B706, particle groups may be formed with one or moreplaceholder particles. A particle group formed with placeholderparticles may include remaining particles that are not part of a groupand one or more of the placeholder particles so that the particle groupincludes the same number of particles as other particle groups.

In some embodiments, the placeholder particles may be given a locationin the particle system such that a distance determined at block B712between each of the placeholder particles and other particles is largerthan the interaction distance. As a result, the distances between theplaceholder particles and other particles may be calculated, but nointeractions between the placeholder particles and other particles maybe considered by the simulation. Thus, including the placeholderparticles in groups may not affect the behavior of the particle systemas determined by the simulation.

As an example, as described with respect to FIG. 5 , distances betweenparticles from a primary cell may be determined with respect toparticles from thirteen cells adjacent to the primary cell. The thirteencells may be referred to calculation cells. However, distances betweenparticles from the primary cell may not be determined with respect toparticles from thirteen other cells adjacent to the primary cell basedon those distances having previously been calculated. The thirteen othercells may be referred to non-calculation cells. Note that distancesbetween the particles of the calculation cells are not determined.Rather, the calculations are related to determining the distancesbetween the particles of the primary cell and the particles of thecalculation cells.

In some embodiments, the groups of particles may be a group from theprimary cell or groups from the calculation cells. When the group ofparticles is from the primary cell, the distances between theplaceholder particles within the group may be calculated. As a result,each of the placeholder particles may be located at vertices ofnon-calculation cells that are at least a cell edge length away from theprimary cell and the calculation cells. As a result, the distancebetween the placeholder particles from the group from the primary cellmay be more than the interaction distance from any other particle in theprimary cell and any other particle from the calculation cells.

When the group of particles is from a calculation cell, the distancesbetween the placeholder particles within the group may not becalculated. As a result, the placeholder particles may all be located ina single location that is at least the interaction distance away fromthe primary cell and any placeholder particles from a group from theprimary cell. What is more, all placeholder particles from groups ofparticles from calculation cells may be located in the same locationbecause no distances between these particles is determined. Arrangingthe placeholder particles in this or a similar manner may allow allcalculations of groups of particles to be performed in a similar mannerwhich may assist reduce a processing time for the calculations.

At block B708, stored position values of the particles from the groupsmay be accessed from memory. The stored position values may be accessedin the third value type. The stored position values may be accessed whena distance between particles is calculated during a simulation.

At block B710, the position values of the particles in the adjacentcells may be adjusted based on the local coordinate systems of theadjacent cells. In these and other embodiments, cell offsets based onthe distances between the given cell and the adjacent cells may also beaccessed. The cell offsets may be accessed in the third value type. Thecell offsets may be applied to the position values of the particles inthe adjacent cells to obtain the locations of the particles in theadjacent cells in the local coordinate system of the given cell.

At block B712, distances between particles in the group and otherparticles may be determined based on the position values of theparticles in the third value type. In some embodiments, the otherparticles may also be in one or more groups. For example, a processingunit may be configured to perform a process that determines distancesbetween particles in a group from a primary cell and particles inmultiple groups from one or more calculation cells. In these and otherembodiments, differences between the position values in the third valuetype may be calculated to determine the distances.

At block B714, the distances between the particles in the group and theother particles may be converted to the second value type. Afterconverting the distances between particles, the scalar value applied toboth the position values of the particles and the cell offsets may beremoved. For example, an inverse of the scalar value may be applied tothe distances between particles.

Modifications, additions, or omissions may be made to the method 700without departing from the scope of the present disclosure. For example,the functions and/or operations performed may be implemented indiffering order. Furthermore, the outlined functions and operations areonly provided as examples, and some of the functions and operations maybe optional, combined into fewer functions and operations, or expandedinto additional functions and operations without detracting from theessence of the disclosed embodiments. In some embodiments, the method700 may include additional blocks or fewer blocks.

For example, in some embodiments, the method 700 may include comparingthe distances to the interaction distance. In response to a distancebeing less than or equal to the interaction distance, an interactionbetween particles from which the distance results may be considered bythe simulation. In these and other embodiments, the interaction may be anonbonded interaction that may be based on the distance. In response toa distance being more than the interaction distance, no interactionbetween the particles from which the distance results may be consideredby the simulation.

FIG. 8 is a flow diagram showing another example method 800 foranalyzing behavior of a particle system, in accordance with someembodiments of the present disclosure.

The method may be carried out via a simulation system, such as but notlimited to the simulation system 110 of FIG. 1 .

The method 800, at block B 802, includes applying a scalar value to aposition value for at least one particle of multiple particles. In someembodiments, the multiple particles may be part of a particle system. Inthese and other embodiments, the scalar value may be applied during ananalysis of the behavior of the multiple particles. In some embodiments,the scalar value may be based on one or more parameters for theanalysis.

At block B804, after applying the scalar value, the position valuescorresponding to the multiple particles are truncated. At block B 806, adistance between a first particle and a second particle is determinedbased on the truncated position values of the first particle and thesecond particle. At block B808, a behavior of the particle system isdetermined based on the distance.

Modifications, additions, or omissions may be made to the method 800without departing from the scope of the present disclosure. For example,the functions and/or operations performed may be implemented indiffering order. Furthermore, the outlined functions and operations areonly provided as examples, and some of the functions and operations maybe optional, combined into fewer functions and operations, or expandedinto additional functions and operations without detracting from theessence of the disclosed embodiments. In some embodiments, the method800 may include additional blocks or fewer blocks.

For example, in some embodiments, the method 800 may include calculatinginteractions between the first particle and the second particle usingthe distance between the first particle and the second particle. Inthese and other embodiments, the behavior of the particle system may bedetermined based on the calculated interactions.

In some embodiments, the method 800 may further include partitioning theparticle system into multiple cells. In these and other embodiments,each cell of the multiple cells may include a dimension and encompassone or more of the particles. In these and other embodiments, the scalarvalue may be further based on the dimension of the cells.

Alternately or additionally, the method 800 may further includetranslating a global position value for each of the particles from aglobal coordinate system to a local cell coordinate system based on thecells that include the particles. In these and other embodiments, theposition value that is truncated may be the position value of the cellsin the local cell coordinate system. In some embodiments, the dimensionof the cells may be based on a distance at which interactions betweenparticles are not considered during the determining the behavior of theparticle system.

Alternately or additionally, the method 800 may further include storingthe truncated position value for each of the particles and beforedetermining the distance, removing the scalar value applied to thetruncated position value such that the distance between the firstparticle and the second particle are determined using the truncatedposition value with the scalar value removed. In these and otherembodiments, the method 800 may further include after removing thescalar value applied to the truncated position value, changing a valuetype of the truncated position value such that the distance between thefirst particle and the second particle are determined using thetruncated position value with the scalar value removed and value typechanged.

FIG. 9 is a flow diagram showing another example method 900 foranalyzing behavior of a particle system, in accordance with someembodiments of the present disclosure. The method may be carried out viaa simulation system, such as but not limited to the simulation system110 of FIG. 1 .

The method 900, at block B 902, includes applying a scalar value to aposition value for at least one particle of multiple particles. In someembodiments, the multiple particles may be part of a particle system. Inthese and other embodiments, the scalar value may be applied during ananalysis of the behavior of the multiple particles. In some embodiments,the scalar value may be based on one or more parameters for theanalysis.

At block B904, after applying the scalar value, a distance is determinedbetween a first particle of the particles and a second particle of theparticles using the position values of the first particle and the secondparticle. At block B906, the distance is converted from a first valuetype to a different value type using the scalar value. At block B908, abehavior of the particle system is determined based on the converteddistance.

Modifications, additions, or omissions may be made to the method 900without departing from the scope of the present disclosure. For example,the functions and/or operations performed may be implemented indiffering order. Furthermore, the outlined functions and operations areonly provided as examples, and some of the functions and operations maybe optional, combined into fewer functions and operations, or expandedinto additional functions and operations without detracting from theessence of the disclosed embodiments. In some embodiments, the method900 may include additional blocks or fewer blocks.

For example, in some embodiments, the method 900 may include groupingthe particles into multiple groups of equal size and after applying thescalar value, determining, for a first group, a distance between one ormore particles of the particles of the first group and one or moreparticles of second particles of the particle system using the positionvalues of the particles of the first group and the second particles. Inthese and other embodiments, the first particle may be part of the firstgroup and the second particle may be part of the second particles.

Alternately or additionally, the method 900 may further includegenerating an additional group for particles not grouped into themultiple groups. In these and other embodiments, the generating mayinclude providing one or more placeholder particles in the additionalgroup when determining distances between one or more particles of theadditional group and one or more other particles. In these and otherembodiments, the placeholder particles may be positioned in the particlesystem such that no interactions are calculated between the placeholderparticles and the particles of the particle system.

Alternately or additionally, the method 900 may further includecalculating one or more interactions between the first particle and thesecond particle using the distance between the first particle and thesecond particle. In these and other embodiments, the behavior of theparticle system may be determined based on the one or more calculatedinteractions.

Alternately or additionally, the method 900 may further include afterapplying the scalar value, truncating the position values of theparticles such that the truncated position values of the first particleand the second particle are used to determine the distance between thefirst particle and the second particle.

Alternately or additionally, the method 900 may further includepartitioning the particle system into multiple cells. In these and otherembodiments, at least one cell may include a dimension and encompass oneor more of the particles. In some embodiments, the scalar value may befurther based on the dimension of the cells. In some embodiments, thedimension of the cells may be based on a distance at which interactionsbetween particles are not considered during the determining the behaviorof the particle system.

EXAMPLE COMPUTING DEVICE

FIG. 10 is a block diagram of an example computing device(s) 1000suitable for use in implementing some embodiments of the presentdisclosure. Computing device 1000 may include an interconnect system1002 that directly or indirectly couples the following devices: memory1004, one or more central processing units (CPUs) 1006, one or moregraphics processing units (GPUs) 1008, a communication interface 1010,I/O ports 1012, input/output components 1014, a power supply 1016, oneor more presentation components 1018 (e.g., display(s)), and one or morelogic units 1020.

Although the various blocks of FIG. 10 are shown as connected via theinterconnect system 1002 with lines, this is not intended to be limitingand is for clarity only. For example, in some embodiments, apresentation component 1018, such as a display device, may be consideredan I/O component 1014 (e.g., if the display is a touch screen). Asanother example, the CPUs 1006 and/or GPUs 1008 may include memory(e.g., the memory 1004 may be representative of a storage device inaddition to the memory of the GPUs 1008, the CPUs 1006, and/or othercomponents). In other words, the computing device of FIG. 10 is merelyillustrative. Distinction is not made between such categories as“workstation,” “server,” “laptop,” “desktop,” “tablet,” “client device,”“mobile device,” “hand-held device,” “game console,” “electronic controlunit (ECU),” “virtual reality system,” “augmented reality system,”and/or other device or system types, as all are contemplated within thescope of the computing device of FIG. 10 .

The interconnect system 1002 may represent one or more links or busses,such as an address bus, a data bus, a control bus, or a combinationthereof. The interconnect system 1002 may include one or more bus orlink types, such as an industry standard architecture (ISA) bus, anextended industry standard architecture (EISA) bus, a video electronicsstandards association (VESA) bus, a peripheral component interconnect(PCI) bus, a peripheral component interconnect express (PCIe) bus,and/or another type of bus or link. In some embodiments, there aredirect connections between components. As an example, the CPU 1006 maybe directly connected to the memory 1004. Further, the CPU 1006 may bedirectly connected to the GPU 1008. Where there is direct, orpoint-to-point, connection between components, the interconnect system1002 may include a PCIe link to carry out the connection. In theseexamples, a PCI bus need not be included in the computing device 1000.

The memory 1004 may include any of a variety of computer-readable media.The computer-readable media may be any available media that may beaccessed by the computing device 1000. The computer-readable media mayinclude both volatile and nonvolatile media, and removable andnon-removable media. By way of example, and not limitation, thecomputer-readable media may comprise computer-storage media andcommunication media.

The computer-storage media may include both volatile and nonvolatilemedia and/or removable and non-removable media implemented in any methodor technology for storage of information such as computer-readableinstructions, data structures, program modules, and/or other data types.For example, the memory 1004 may store computer-readable instructions(e.g., that represent a program(s) and/or a program element(s), such asan operating system. Computer-storage media may include, but is notlimited to, RAM, ROM, EEPROM, flash memory or other memory technology,CD-ROM, digital versatile disks (DVD) or other optical disk storage,magnetic cassettes, magnetic tape, magnetic disk storage or othermagnetic storage devices, or any other medium that may be used to storethe desired information and that may be accessed by computing device1000. As used herein, computer storage media does not comprise signalsper se.

The computer storage media may embody computer-readable instructions,data structures, program modules, and/or other data types in a modulateddata signal such as a carrier wave or other transport mechanism andincludes any information delivery media. The term “modulated datasignal” may refer to a signal that has one or more of itscharacteristics set or changed in such a manner as to encode informationin the signal. By way of example, and not limitation, the computerstorage media may include wired media such as a wired network ordirect-wired connection, and wireless media such as acoustic, RF,infrared and other wireless media. Combinations of any of the aboveshould also be included within the scope of computer-readable media.

The CPU(s) 1006 may be configured to execute at least some of thecomputer-readable instructions to control one or more components of thecomputing device 1000 to perform one or more of the methods and/orprocesses described herein. The CPU(s) 1006 may each include one or morecores (e.g., one, two, four, eight, twenty-eight, seventy-two, etc.)that are capable of handling a multitude of software threadssimultaneously. The CPU(s) 1006 may include any type of processor, andmay include different types of processors depending on the type ofcomputing device 1000 implemented (e.g., processors with fewer cores formobile devices and processors with more cores for servers). For example,depending on the type of computing device 1000, the processor may be anAdvanced RISC Machines (ARM) processor implemented using ReducedInstruction Set Computing (RISC) or an x86 processor implemented usingComplex Instruction Set Computing (CISC). The computing device 1000 mayinclude one or more CPUs 1006 in addition to one or more microprocessorsor supplementary co-processors, such as math co-processors.

In addition to or alternatively from the CPU(s) 1006, the GPU(s) 1008may be configured to execute at least some of the computer-readableinstructions to control one or more components of the computing device1000 to perform one or more of the methods and/or processes describedherein. One or more of the GPU(s) 1008 may be an integrated GPU (e.g.,with one or more of the CPU(s) 1006 and/or one or more of the GPU(s)1008 may be a discrete GPU. In embodiments, one or more of the GPU(s)1008 may be a coprocessor of one or more of the CPU(s) 1006. The GPU(s)1008 may be used by the computing device 1000 to render graphics (e.g.,3D graphics) or perform general purpose computations. For example, theGPU(s) 1008 may be used for General-Purpose computing on GPUs (GPGPU).The GPU(s) 1008 may include hundreds or thousands of cores that arecapable of handling hundreds or thousands of software threadssimultaneously. The GPU(s) 1008 may generate pixel data for outputimages in response to rendering commands (e.g., rendering commands fromthe CPU(s) 1006 received via a host interface). The GPU(s) 1008 mayinclude graphics memory, such as display memory, for storing pixel dataor any other suitable data, such as GPGPU data. The display memory maybe included as part of the memory 1004. The GPU(s) 1008 may include twoor more GPUs operating in parallel (e.g., via a link). The link maydirectly connect the GPUs (e.g., using NVLINK) or may connect the GPUsthrough a switch (e.g., using NVSwitch). When combined together, eachGPU 1008 may generate pixel data or GPGPU data for different portions ofan output or for different outputs (e.g., a first GPU for a first imageand a second GPU for a second image). Each GPU may include its ownmemory, or may share memory with other GPUs.

In addition to or alternatively from the CPU(s) 1006 and/or the GPU(s)1008, the logic unit(s) 1020 may be configured to execute at least someof the computer-readable instructions to control one or more componentsof the computing device 1000 to perform one or more of the methodsand/or processes described herein. In embodiments, the CPU(s) 1006, theGPU(s) 1008, and/or the logic unit(s) 1020 may discretely or jointlyperform any combination of the methods, processes and/or portionsthereof. One or more of the logic units 1020 may be part of and/orintegrated in one or more of the CPU(s) 1006 and/or the GPU(s) 1008and/or one or more of the logic units 1020 may be discrete components orotherwise external to the CPU(s) 1006 and/or the GPU(s) 1008. Inembodiments, one or more of the logic units 1020 may be a coprocessor ofone or more of the CPU(s) 1006 and/or one or more of the GPU(s) 1008.

Examples of the logic unit(s) 1020 include one or more processing coresand/or components thereof, such as Tensor Cores (TCs), Tensor ProcessingUnits(TPUs), Pixel Visual Cores (PVCs), Vision Processing Units (VPUs),Graphics Processing Clusters (GPCs), Texture Processing Clusters (TPCs),Streaming Multiprocessors (SMs), Tree Traversal Units (TTUs), ArtificialIntelligence Accelerators (AIAs), Deep Learning Accelerators (DLAs),Arithmetic-Logic Units (ALUs), Application-Specific Integrated Circuits(ASICs), Floating Point Units (FPUs), I/O elements, peripheral componentinterconnect (PCI) or peripheral component interconnect express (PCIe)elements, and/or the like.

The communication interface 1010 may include one or more receivers,transmitters, and/or transceivers that enable the computing device 1000to communicate with other computing devices via an electroniccommunication network, including wired and/or wireless communications.The communication interface 1010 may include components andfunctionality to enable communication over any of a number of differentnetworks, such as wireless networks (e.g., Wi-Fi, Z-Wave, Bluetooth,Bluetooth LE, ZigBee, etc.), wired networks (e.g., communicating overEthernet or InfiniBand), low-power wide-area networks (e.g., LoRaWAN,SigFox, etc.), and/or the Internet.

The I/O ports 1012 may enable the computing device 1000 to be logicallycoupled to other devices including the I/O components 1014, thepresentation component(s) 1018, and/or other components, some of whichmay be built into (e.g., integrated in) the computing device 1000.

Illustrative I/O components 1014 include a microphone, mouse, keyboard,joystick, game pad, game controller, satellite dish, scanner, printer,wireless device, etc. The I/O components 1014 may provide a natural userinterface (NUI) that processes air gestures, voice, or otherphysiological inputs generated by a user. In some instances, inputs maybe transmitted to an appropriate network element for further processing.An NUI may implement any combination of speech recognition, stylusrecognition, facial recognition, biometric recognition, gesturerecognition both on screen and adjacent to the screen, air gestures,head and eye tracking, and touch recognition (as described in moredetail below) associated with a display of the computing device 1000.The computing device 1000 may include depth cameras, such asstereoscopic camera systems, infrared camera systems, RGB camerasystems, touchscreen technology, and combinations of these, for gesturedetection and recognition. Additionally, the computing device 1000 mayinclude accelerometers or gyroscopes (e.g., as part of an inertiameasurement unit (IMU)) that enable detection of motion. In someexamples, the output of the accelerometers or gyroscopes may be used bythe computing device 1000 to render immersive augmented reality orvirtual reality.

The power supply 1016 may include a hard-wired power supply, a batterypower supply, or a combination thereof. The power supply 1016 mayprovide power to the computing device 1000 to enable the components ofthe computing device 1000 to operate.

The presentation component(s) 1018 may include a display (e.g., amonitor, a touch screen, a television screen, a heads-up-display (HUD),other display types, or a combination thereof), speakers, and/or otherpresentation components. The presentation component(s) 1018 may receivedata from other components (e.g., the GPU(s) 1008, the CPU(s) 1006,etc.), and output the data (e.g., as an image, video, sound, etc.).

EXAMPLE DATA CENTER

FIG. 11 illustrates an example data center 1100 that may be used in atleast one embodiments of the present disclosure. The data center 1100may include a data center infrastructure layer 1110, a framework layer1120, a software layer 1130, and/or an application layer 1140.

As shown in FIG. 11 , the data center infrastructure layer 1110 mayinclude a resource orchestrator 1112, grouped computing resources 1114,and node computing resources (“node C.R.s”) 1116(1)-1116(N), where “N”represents any whole, positive integer. In at least one embodiment, nodeC.R.s 1116(1)-1116(N) may include, but are not limited to, any number ofcentral processing units (CPUs) or other processors (including DPUs,accelerators, field programmable gate arrays (FPGAs), graphicsprocessors or graphics processing units (GPUs), etc.), memory devices(e.g., dynamic read-only memory), storage devices (e.g., solid state ordisk drives), network input/output (NW I/O) devices, network switches,virtual machines (VMs), power modules, and/or cooling modules, etc. Insome embodiments, one or more node C.R.s from among node C.R.s1116(1)-1116(N) may correspond to a server having one or more of theabove-mentioned computing resources. In addition, in some embodiments,the node C.R.s 1116(1)-1161(N) may include one or more virtualcomponents, such as vGPUs, vCPUs, and/or the like, and/or one or more ofthe node C.R.s 1116(1)-1116(N) may correspond to a virtual machine (VM).

In at least one embodiment, grouped computing resources 1114 may includeseparate groupings of node C.R.s 1116 housed within one or more racks(not shown), or many racks housed in data centers at variousgeographical locations (also not shown). Separate groupings of nodeC.R.s 1116 within grouped computing resources 1114 may include groupedcompute, network, memory or storage resources that may be configured orallocated to support one or more workloads. In at least one embodiment,several node C.R.s 1116 including CPUs, GPUs, DPUs, and/or otherprocessors may be grouped within one or more racks to provide computeresources to support one or more workloads. The one or more racks mayalso include any number of power modules, cooling modules, and/ornetwork switches, in any combination.

The resource orchestrator 1112 may configure or otherwise control one ormore node C.R.s 1116(1)-1116(N) and/or grouped computing resources 1114.In at least one embodiment, resource orchestrator 1112 may include asoftware design infrastructure (SDI) management entity for the datacenter 1100. The resource orchestrator 1112 may include hardware,software, or some combination thereof.

In at least one embodiment, as shown in FIG. 11 , framework layer 1120may include a job scheduler 1133, a configuration manager 1134, aresource manager 1136, and/or a distributed file system 1138. Theframework layer 1120 may include a framework to support software 1132 ofsoftware layer 1130 and/or one or more application(s) 1142 ofapplication layer 1140. The software 1132 or application(s) 1142 mayrespectively include web-based service software or applications, such asthose provided by Amazon Web Services, Google Cloud and Microsoft Azure.The framework layer 1120 may be, but is not limited to, a type of freeand open-source software web application framework such as Apache Spark™(hereinafter “Spark”) that may utilize distributed file system 1138 forlarge-scale data processing (e.g., “big data”). In at least oneembodiment, job scheduler 1133 may include a Spark driver to facilitatescheduling of workloads supported by various layers of data center 1100.The configuration manager 1134 may be capable of configuring differentlayers such as software layer 1130 and framework layer 1120 includingSpark and distributed file system 1138 for supporting large-scale dataprocessing. The resource manager 1136 may be capable of managingclustered or grouped computing resources mapped to or allocated forsupport of distributed file system 1138 and job scheduler 1133. In atleast one embodiment, clustered or grouped computing resources mayinclude grouped computing resource 1114 at data center infrastructurelayer 1110. The resource manager 1136 may coordinate with resourceorchestrator 1112 to manage these mapped or allocated computingresources.

In at least one embodiment, software 1132 included in software layer1130 may include software used by at least portions of node C.R.s1116(1)-1116(N), grouped computing resources 1114, and/or distributedfile system 1138 of framework layer 1120. One or more types of softwaremay include, but are not limited to, Internet web page search software,e-mail virus scan software, database software, and streaming videocontent software.

In at least one embodiment, application(s) 1142 included in applicationlayer 1140 may include one or more types of applications used by atleast portions of node C.R.s 1116(1)-1116(N), grouped computingresources 1114, and/or distributed file system 1138 of framework layer1120. One or more types of applications may include, but are not limitedto, any number of a genomics application, a cognitive compute, and amachine learning application, including training or inferencingsoftware, machine learning framework software (e.g., PyTorch,TensorFlow, Caffe, etc.), and/or other machine learning applicationsused in conjunction with one or more embodiments.

In at least one embodiment, any of configuration manager 1134, resourcemanager 1136, and resource orchestrator 1112 may implement any numberand type of self-modifying actions based on any amount and type of dataacquired in any technically feasible fashion. Self-modifying actions mayrelieve a data center operator of data center 1100 from making possiblybad configuration decisions and possibly avoiding underutilized and/orpoor performing portions of a data center.

The data center 1100 may include tools, services, software or otherresources to train one or more machine learning models or predict orinfer information using one or more machine learning models according toone or more embodiments described herein. For example, a machinelearning model(s) may be trained by calculating weight parametersaccording to a neural network architecture using software and/orcomputing resources described above with respect to the data center1100. In at least one embodiment, trained or deployed machine learningmodels corresponding to one or more neural networks may be used to inferor predict information using resources described above with respect tothe data center 1100 by using weight parameters calculated through oneor more training techniques, such as but not limited to those describedherein.

In at least one embodiment, the data center 1100 may use CPUs,application-specific integrated circuits (ASICs), GPUs, FPGAs, and/orother hardware (or virtual compute resources corresponding thereto) toperform training and/or inferencing using above-described resources.Moreover, one or more software and/or hardware resources described abovemay be configured as a service to allow users to train or performinginferencing of information, such as image recognition, speechrecognition, or other artificial intelligence services.

EXAMPLE NETWORK ENVIRONMENTS

Network environments suitable for use in implementing embodiments of thedisclosure may include one or more client devices, servers, networkattached storage (NAS), other backend devices, and/or other devicetypes. The client devices, servers, and/or other device types (e.g.,each device) may be implemented on one or more instances of thecomputing device(s) 1000 of FIG. 10 —e.g., each device may includesimilar components, features, and/or functionality of the computingdevice(s) 1000. In addition, where backend devices (e.g., servers, NAS,etc.) are implemented, the backend devices may be included as part of adata center 1100, an example of which is described in more detail hereinwith respect to FIG. 11 .

Components of a network environment may communicate with each other viaa network(s), which may be wired, wireless, or both. The network mayinclude multiple networks, or a network of networks. By way of example,the network may include one or more Wide Area Networks (WANs), one ormore Local Area Networks (LANs), one or more public networks such as theInternet and/or a public switched telephone network (PSTN), and/or oneor more private networks. Where the network includes a wirelesstelecommunications network, components such as a base station, acommunications tower, or even access points (as well as othercomponents) may provide wireless connectivity.

Compatible network environments may include one or more peer-to-peernetwork environments—in which case a server may not be included in anetwork environment—and one or more client-server networkenvironments—in which case one or more servers may be included in anetwork environment. In peer-to-peer network environments, functionalitydescribed herein with respect to a server(s) may be implemented on anynumber of client devices.

In at least one embodiment, a network environment may include one ormore cloud-based network environments, a distributed computingenvironment, a combination thereof, etc. A cloud-based networkenvironment may include a framework layer, a job scheduler, a resourcemanager, and a distributed file system implemented on one or more ofservers, which may include one or more core network servers and/or edgeservers. A framework layer may include a framework to support softwareof a software layer and/or one or more application(s) of an applicationlayer. The software or application(s) may respectively include web-basedservice software or applications. In embodiments, one or more of theclient devices may use the web-based service software or applications(e.g., by accessing the service software and/or applications via one ormore application programming interfaces (APIs)). The framework layer maybe, but is not limited to, a type of free and open-source software webapplication framework such as that may use a distributed file system forlarge-scale data processing (e.g., “big data”).

A cloud-based network environment may provide cloud computing and/orcloud storage that carries out any combination of computing and/or datastorage functions described herein (or one or more portions thereof).Any of these various functions may be distributed over multiplelocations from central or core servers (e.g., of one or more datacenters that may be distributed across a state, a region, a country, theglobe, etc.). If a connection to a user (e.g., a client device) isrelatively close to an edge server(s), a core server(s) may designate atleast a portion of the functionality to the edge server(s). Acloud-based network environment may be private (e.g., limited to asingle organization), may be public (e.g., available to manyorganizations), and/or a combination thereof (e.g., a hybrid cloudenvironment).

The client device(s) may include at least some of the components,features, and functionality of the example computing device(s) 1000described herein with respect to FIG. 10 . By way of example and notlimitation, a client device may be embodied as a Personal Computer (PC),a laptop computer, a mobile device, a smartphone, a tablet computer, asmart watch, a wearable computer, a Personal Digital Assistant (PDA), anMP3 player, a virtual reality headset, a Global Positioning System (GPS)or device, a video player, a video camera, a surveillance device orsystem, a vehicle, a boat, a flying vessel, a virtual machine, a drone,a robot, a handheld communications device, a hospital device, a gamingdevice or system, an entertainment system, a vehicle computer system, anembedded system controller, a remote control, an appliance, a consumerelectronic device, a workstation, an edge device, any combination ofthese delineated devices, or any other suitable device.

The subject technology of the present invention is illustrated, forexample, according to various aspects described below. Various examplesof aspects of the subject technology are described as numbered examples(1, 2, 3, etc.) for convenience. These are provided as examples and donot limit the subject technology. The aspects of the variousimplementations described herein may be omitted, substituted for aspectsof other implementations, or combined with aspects of otherimplementations unless context dictates otherwise. For example, one ormore aspects of example 1 below may be omitted, substituted for one ormore aspects of another example (e.g., example 2) or examples, orcombined with aspects of another example . The following is anon-limiting summary of some example implementations presented herein.

Example 1 may include a system including one or more processing units toperform operation. The operations may include partitioning a particlesystem that includes multiple particles into multiple cells. In someembodiments, each cell of the multiple cells may include a dimension andencompassing one or more of the multiple particles and applying a scalarvalue, based on the dimension, to a position value for each of themultiple particles. The operations may further include after applyingthe scalar value, truncating the position values of the multipleparticles, determining a distance between a first particle of themultiple particles and a second particle of the multiple particles basedon the truncated position value of the first particle and the truncatedposition value of the second particle, and analyzing a behavior of theparticle system based on the distance.

Example 2 may include a method of particle system analysis. The methodmay include during an analysis of behavior of multiple particles in aparticle system, applying a scalar value, based on parameters for theanalysis, to a position value for each of the multiple particles andafter applying the scalar value, truncating the position values of themultiple particles. The method may further include determining adistance between a first particle of the multiple particles and a secondparticle of the multiple particles based on the truncated positionvalues of the first particle and the second particle and determining abehavior of the particle system based on the distance.

Example 3 may include a method of particle system analysis. The methodmay include during an analysis of behavior of multiple particles in aparticle system, applying a scalar value, based on parameters for theanalysis, to a position value for each of the multiple particles andafter applying the scalar value, truncating the position values of themultiple particles. The method may further include after truncating theposition values, converting the position values to a different valuetype using the scalar value; after converting the position values,determining a distance between a first particle of the multipleparticles and a second particle of the multiple particles based on thetruncated position values of the different value type of the firstparticle and the second particle; and determining a behavior of theparticle system based on the distance.

Example 4 may include a system including one or more processing units toperform operations. The operations may include partitioning a particlesystem that includes multiple particles into multiple cells, each cellof the multiple cells including a dimension and encompassing one or moreof the multiple particles and applying a scalar value, based on thedimension, to a position value for each of the multiple particles. Theoperations may further include after applying the scalar value,determining a distance between a first particle of the multipleparticles and a second particle of the multiple particles using theposition values of the first particle and the second particle andconverting the distance to a different value type using the scalarvalue. The operations may further include analyzing a behavior of theparticle system based on the distance.

Example 5 may include method including during an analysis of behavior ofmultiple particles in a particle system, applying a scalar value, basedon parameters for the analysis, to a position value for each of themultiple particles and after applying the scalar value, determining adistance between a first particle of the multiple particles and a secondparticle of the multiple particles using the position values of thefirst particle and the second particle. The method may further includeconverting the distance to a different value type using the scalar valueand determining a behavior of the particle system based on the converteddistance.

Example 6 may include a method that includes during an analysis ofbehavior of multiple particles in a particle system, applying a scalarvalue, based on parameters for the analysis, to a position value foreach of the multiple particles and grouping the multiple particles intomultiple groups of equal size. The method may further include afterapplying the scalar value, determining, for a first group of themultiple particles, a distance between each of first multiple particlesof the first group and each of multiple second particles of the multipleparticles using the position values of the first multiple particles andthe second multiple particles. The method may further include convertingthe distances to a different value type using the scalar value anddetermining a behavior of the particle system based on the converteddistances.

The disclosure may be described in the general context of computer codeor machine-useable instructions, including computer-executableinstructions such as program modules, being executed by a computer orother machine, such as a personal data assistant or other handhelddevice. Generally, program modules including routines, programs,objects, components, data structures, etc., refer to code that performparticular tasks or implement particular abstract data types. Thedisclosure may be practiced in a variety of system configurations,including hand-held devices, consumer electronics, general-purposecomputers, more specialty computing devices, etc. The disclosure mayalso be practiced in distributed computing environments where tasks areperformed by remote-processing devices that are linked through acommunications network.

As used herein, a recitation of “and/or” with respect to two or moreelements should be interpreted to mean only one element, or acombination of elements. For example, “element A, element B, and/orelement C” may include only element A, only element B, only element C,element A and element B, element A and element C, element B and elementC, or elements A, B, and C. In addition, “at least one of element A orelement B” may include at least one of element A, at least one ofelement B, or at least one of element A and at least one of element B.Further, “at least one of element A and element B” may include at leastone of element A, at least one of element B, or at least one of elementA and at least one of element B. Additionally, “one or more of A, B, andC, etc.” may be construed in a similar manner.

Additionally, the use of the terms “first,” “second,” “third,” etc., arenot necessarily used herein to connote a specific order or number ofelements. Generally, the terms “first,” “second,” “third,” etc., areused to distinguish between different elements as generic identifiers.Absence a showing that the terms “first,” “second,” “third,” etc.,connote a specific order, these terms should not be understood toconnote a specific order. Furthermore, absence a showing that the termsfirst,” “second,” “third,” etc., connote a specific number of elements,these terms should not be understood to connote a specific number ofelements. For example, a first widget may be described as having a firstside and a second widget may be described as having a second side. Theuse of the term “second side” with respect to the second widget may beto distinguish such side of the second widget from the “first side” ofthe first widget and not to connote that the second widget has twosides.

Additionally, if a specific number of an introduced claim recitation isintended, such an intent will be explicitly recited in the claim, and inthe absence of such recitation no such intent is present. For example,as an aid to understanding, the following appended claims may containusage of the introductory phrases “at least one” and “one or more” tointroduce claim recitations. However, the use of such phrases should notbe construed to imply that the introduction of a claim recitation by theindefinite articles “a” or “an” limits any particular claim containingsuch introduced claim recitation to embodiments containing only one suchrecitation, even when the same claim includes the introductory phrases“one or more” or “at least one” and indefinite articles such as “a” or“an” (e.g., “a” and/or “an” should be interpreted to mean “at least one”or “one or more”); the same holds true for the use of definite articlesused to introduce claim recitations. Additionally, use of the term“based on” should not be interpreted as “only based on” or “based onlyon.” Rather, a first element being “based on” a second element includesinstances in which the first element is based on the second element butmay also be based on one or more additional elements.

The subject matter of the present disclosure is described withspecificity herein to meet statutory requirements. However, thedescription itself is not intended to limit the scope of thisdisclosure. Rather, the inventors have contemplated that the claimedsubject matter might also be embodied in other ways, to includedifferent steps or combinations of steps similar to the ones describedin this document, in conjunction with other present or futuretechnologies. Moreover, although the terms “step” and/or “block” may beused herein to connote different elements of methods employed, the termsshould not be interpreted as implying any particular order among orbetween various steps herein disclosed unless and except when the orderof individual steps is explicitly described.

What is claimed is:
 1. A system comprising: one or more processing unitsto perform operations, the operations comprising: partitioning aplurality of particles into a plurality of cells, at least one cell ofthe plurality of cells including a dimension and encompassing one ormore of the plurality of particles; applying a scalar value to aposition value for at least one particle of the plurality of particles,the scalar value based on the dimension; after applying the scalarvalue, truncating the position values of the plurality of particles;determining a distance between a first particle of the plurality ofparticles and a second particle of the plurality of particles based onthe truncated position value of the first particle and the truncatedposition value of the second particle; and analyzing a behavior of theparticle system based on the distance.
 2. The system of claim 1, whereinthe operations further comprise translating a global position value forat least one particle of the plurality of particles from a globalcoordinate system to a local cell coordinate system based on the cellsof the plurality of cells that include the at least one particle,wherein the position value that is truncated is the position value ofthe cells in the local cell coordinate system.
 3. The system of claim 1,wherein the first particle of the plurality of particles and the secondparticle of the plurality of particles are in the same cell of theplurality of cells or directly adjacent cells of the plurality of cells.4. The system of claim 1, wherein the operations further comprise:storing the truncated position value for at least one particle of theplurality of particles; and before determining the distance, removingthe scalar value applied to the truncated position value such that thedistance between the first particle of the plurality of particles andthe second particle are determined using the truncated position valuewith the scalar value removed.
 5. The system of claim 4, wherein theoperations further comprise, after removing the scalar value applied tothe truncated position value, changing a value type of the truncatedposition value such that the distance between the first particle of theplurality of particles and the second particle is determined using thetruncated position value with the scalar value removed and value typechanged.
 6. The system of claim 1, wherein the dimension is based on adistance at which one or more interactions between particles are notconsidered during the analyzing the behavior of the particle system. 7.The system of claim 1, wherein the operations further comprisecalculating one or more interactions between the first particle and thesecond particle using the distance between the first particle and thesecond particle, wherein the behavior of the particle system isdetermined based on the calculated interactions.
 8. A method of particlesystem analysis, the method comprising: during an analysis of behaviorof a plurality of particles in a particle system, applying a scalarvalue to a position value for at least one particle of the plurality ofparticles, the scalar value based on one or more parameters for theanalysis; after applying the scalar value, truncating the positionvalues corresponding to the plurality of particles; determining adistance between a first particle of the plurality of particles and asecond particle of the plurality of particles based on the truncatedposition values of the first particle and the second particle; anddetermining a behavior of the particle system based on the distance. 9.The method of claim 8, further comprising calculating interactionsbetween the first particle and the second particle using the distancebetween the first particle and the second particle, wherein the behaviorof the particle system is determined based on the calculatedinteractions.
 10. The method of claim 8, further comprising partitioningthe particle system into a plurality of cells, at least one cell of theplurality of cells including a dimension and encompassing one or more ofthe plurality of particles, wherein the scalar value is further based onthe dimension of the cells.
 11. The method of claim 10, furthercomprising translating a global position value for at least one particleof the plurality of particles from a global coordinate system to a localcell coordinate system based on the cells of the plurality of cells thatinclude the plurality of particles, wherein the position value that istruncated is the position value of the cells in the local cellcoordinate system.
 12. The method of claim 10, wherein the dimension isbased on a distance at which one or more interactions between particlesof the plurality of particles are not considered during the determiningthe behavior of the particle system.
 13. The method of claim 8, furthercomprising: storing the truncated position value for at least oneparticle of the plurality of particles; and before determining thedistance, removing the scalar value applied to the truncated positionvalue such that the distance between the first particle of the pluralityof particles and the second particle are determined using the truncatedposition value with the scalar value removed.
 14. The method of claim13, further comprising after removing the scalar value applied to thetruncated position value, changing a value type of the truncatedposition value such that the distance between the first particle and thesecond particle are determined using the truncated position value withthe scalar value removed and the value type changed.
 15. A method ofparticle system analysis, the method comprising: during an analysis ofbehavior of a plurality of particles in a particle system, applying ascalar value to a position value for at least one particle of theplurality of particles, the scalar value based on one or more parametersfor the analysis; after applying the scalar value, truncating positionvalues corresponding to the plurality of particles; after truncating theposition values, converting the position values to a different valuetype using the scalar value; after converting the position values,determining a distance between a first particle of the plurality ofparticles and a second particle of the plurality of particles based onthe truncated position values of the different value type of the firstparticle and the second particle; and determining a behavior of theparticle system based on the distance.
 16. The method of claim 15,further comprising partitioning the particle system into a plurality ofcells, at least one cell of the plurality of cells including a dimensionand encompassing one or more of the plurality of particles, wherein thescalar value is further based on the dimension of the cells.
 17. Themethod of claim 16, further comprising translating a global positionvalue for at least one particle of the plurality of particles from aglobal coordinate system to a local cell coordinate system based on thecells of the plurality of cells that include the plurality of particles,wherein the position value that is truncated is the position value ofthe cells in the local cell coordinate system.
 18. The method of claim16, wherein the dimension is based on a distance at which interactionsbetween particles are not considered during the determining the behaviorof the particle system.
 19. The method of claim 16, wherein the firstparticle of the plurality of particles and the second particle of theplurality of particles are in the same cell of the plurality of cells ordirectly adjacent cells of the plurality of cells.
 20. The method ofclaim 15, further comprising calculating one or more interactionsbetween the first particle and the second particle using the distancebetween the first particle and the second particle, wherein the behaviorof the particle system is determined based on the calculatedinteractions.